package com.wf.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wf.domain.ZhrjAlarmInfo;
import com.wf.dto.PageDTO;
import com.wf.service.ZhrjAlarmInfoService;
import com.wf.utils.Result;
import com.wf.vo.AlarmInfoVO;
import com.wf.vo.DayCountVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 事件信息接口
 * @author mpk
 * @since 2024/8/22 18:50:37
 */
@RestController
@CrossOrigin
@RequestMapping("/zhrj/events")
public class EventsController {

    @Autowired
    ZhrjAlarmInfoService zhrjAlarmInfoService;

    /**
     * 统计信息接口
     *
     * @return 统计信息数据
     */
    @GetMapping("/statistic")
    public Result statistic() {

        Map<String, Object> statisticVO = zhrjAlarmInfoService.getStatistic();

        return Result.success(statisticVO);
    }

    /**
     * 按月查询每天的事件数
     *
     * @param date 年月，格式为YYYY-MM
     * @return 每天的事件数列表
     */
    @PostMapping("/month_date_count/{date}")
    public Result monthDateCount(@PathVariable String date) {

        // 正则判断日期格式是否正确
        if (!date.matches("^\\d{4}-\\d{2}$")) {
            return Result.fail("日期格式错误");
        }
        List<DayCountVO> dayCountVOS =  zhrjAlarmInfoService.monthDayCount(date);

        return Result.success(dayCountVOS);

    }

    /**
     * 分页查询事件信息
     *
     * @param pageDTO 分页参数
     * @return 分页结果
     */
    @GetMapping("/page")
    public Result page(@RequestBody PageDTO pageDTO) {
        IPage<ZhrjAlarmInfo> page = zhrjAlarmInfoService.page(new Page<>(pageDTO.getPageNum(), pageDTO.getPageSize()));

        return Result.success(page);
    }

    /**
     * 多表查询事件信息
     *
     * @return 事件信息列表
     */
    @GetMapping("/multipleTables")
    public Result multipleTables() {
        List<AlarmInfoVO> alarmInfoVOS =zhrjAlarmInfoService.multipleTables();
        return Result.success(alarmInfoVOS);
    }
}
